Skip to content

FPFNFIXAPEX: recognize fixed imported JSON ordinal lists - #2321

Open
aidenybai wants to merge 19 commits into
mainfrom
codex/closed-json-source-policy-main367-20261101
Open

aidenybai wants to merge 19 commits into
mainfrom
codex/closed-json-source-policy-main367-20261101

Conversation

@aidenybai

@aidenybai aidenybai commented Nov 1, 2026 •

Copy link
Copy Markdown
Member

Imported JSON lists can keep a fixed item-to-position mapping for a component’s lifetime and still receive no-array-index-as-key warnings. This PR recognizes a bounded ownership path through a private React 16 state cell and Route props to native ordinal text.

The supported proof now covers:

  • Genuine zero-attribute Fragments, native state-key-count mount gates, a fixed string BrowserRouter basename, and private request helpers receiving a fresh flat literal options object.
  • A preceding local const string may supply the URL of the proven native .get request. The allowance is tied to that exact argument, call, module, declaration and scope, with one closed read; module URLs, aliases, let/var URLs and unrelated calls remain outside it.
  • Up to 12 ordered inert prelude declarations. Initialized local let bindings require exact declaration, scope and unique-binding evidence, closed reads, and an initializer proven before its capability becomes available. That capability reaches only the validated request path.
  • Exhaustive strict numeric HTTP-status forwarding of the same response data, plus native rejection forwarding through a direct binding, an inline arrow, or a single-use executor-local const arrow. Arrow blocks contain one expression or return.
  • Omitted or literal text responseType for exact selected Axios 0.17.1, 0.18.0 or 0.21.1 evidence under the conservative npm/Yarn manifest profile. Replacements, pnpm metadata, visible patches and unsupported manager declarations refuse this allowance. Every final record must qualify; the new default/text path admits at most 12 normalized records. Existing explicit-JSON behavior is preserved.
  • RegExp and BigInt syntax refusal even when an older parser host gives a RegExp literal a null value.

Warnings remain for writes, escapes, competing producers, unstable Hook order, ambiguous sources/config, unproved control flow, var preludes, let catch handlers, shared/module callbacks, logging and recovery. The transport proof establishes an incoming ownership domain; it does not promise successful parsing or an array shape. Existing CSS/LESS competition, Windows paths, authoritative current-file bindings and per-Program invalidation remain covered.

This head includes the lexical-binding prerequisite from #2322 and Windows CI timeout from #2324. It reuses work checks from #2171 and #2167 and bounds child processes in the ordinary three-scan CLI tests. Review the combined tree or land the prerequisites first. Package versions remain 0.9.21; this follow-up changes no versions, lockfiles or workflows.

Validation on b3d9edff19b7981727b69b284a4b68cff3df1c20:

  • Forced workspace tests: 36,437 passed, 1,119 skipped across seven packages; all 12 test/build tasks executed with zero cache hits.
  • Forced typecheck and build: 10 and 5 successful tasks, respectively, with zero cache hits.
  • Focused provider and whole-rule snapshot suites: 569 and 380 passed.
  • Repository lint, formatting, JSON-report smoke and published-dependency checks passed. Existing lint warnings remain.
  • Independent static review accepted the three-file local-URL delta and the two added refusal controls. Earlier source retains its review qualifications. There were no unexpected failures or retries; the initial provider pass and the requested test-only control revision are recorded separately.

All seven platform jobs, lint, typecheck and both automatic preview builds passed. GitHub CI tested merge f0efc1e76576297aadf8f2a55cd24191a9aa8e43 with main ad51b5a6b1a67106fce8015439f868940cc884f4 (tree 420c91ebcceaafce1a7ed386bbaf60873c830141); local validation above tested head tree 2dc7ed63cc63d7c69eb328f5556b394b25468bd7. Their totals are recorded separately. This PR's 69 compared files have identical Git blobs in those trees; 22 additional main paths account for the tree difference. The PR preview built the merge, while the push preview built the head. Fixed manifest reads verified three 0.9.21 versions and the matching Oxlint preview dependency URLs; archive code identity was not checked. Whole-corpus parity was waived by the requester.

Preserved external notes from 9604e20 (historical; additional test-count and timing claims are unverified by this validation) Imported JSON lists can keep the same item-to-position mapping for a component's lifetime, yet still receive index-key warnings. Recognize the supported ownership path through one private React 16 state cell and Route props to native ordinal text.

The proof covers genuine, zero-attribute React Fragment ancestors; native state-key-count mount gates; and BrowserRouter with a sole fixed string basename. A private request helper may receive one fresh, flat literal options object. Parameter identity and caller scope are preserved, and every final normalized request record must select JSON decoding. Contiguous pure const declarations may precede the helper return or executor request chain. Every initializer, including unused ones, must be certified; dependencies are ordered, references are closed, and the combined declaration count is capped at 12.

A native JSON response may be forwarded inside one exhaustive HTTP-status if/else. Strict equality accepts either operand order against a finite numeric literal. Success forwards the same response data; failure rejects with no argument, a primitive literal, or that response status. Exact response and settlement references remain closed.

Primitive checks reject RegExp and BigInt syntax even when an older parser host represents a RegExp value as null. Legacy request-number behavior is preserved.

A terminal catch may use a synchronous inline arrow that forwards its unchanged error to the native executor reject binding. Expression bodies and single expression/return statement blocks are supported with exact error and reject read-node closure. Logging, recovery and additional statements remain unsupported.

Warnings remain for mutable collections, competing producers, unstable Hook order, escaped state or clients, unknown callers, public parameterized helpers, ambiguous source resolution, and unsupported provider control flow. Prelude declarations still refuse mutable bindings, conditional or nested declarations, bare alias initializers, module bindings as new inputs, and executable initializers. Shared helpers, logging/recovery callbacks, other callback control flow, and default-decoder inference remain unsupported. Existing CSS/LESS filename competition, opaque configuration refusals, Windows path normalization, authoritative current-file bindings, and per-Program cache invalidation are preserved.

This head includes the lexical-binding prerequisite from #2322 and Windows CI timeout from #2324. It reuses the deterministic work checks owned by #2171 and #2167, and bounds each child process in the ordinary three-scan CLI tests. Review the combined tree or land those prerequisites first. Versions remain 0.9.21; no version, lockfile, or workflow changes were added by this follow-up.

Validation on 9604e20c10c4df66301b5f9ffbe3a78509158967:

  • Forced workspace tests: 36,131 passed, 1,119 skipped across seven packages. All 12 test/build tasks executed with zero cache hits.
  • Forced typecheck and build: 10 and 5 successful tasks respectively, with zero cache hits.
  • Focused provider and whole-rule snapshot suites: 419 and 261 passed.
  • Repository lint, formatting, JSON-report schema smoke, and published-dependency checks passed. Existing lint warnings remain.
  • Independent static review accepted the exact three-path forwarding delta; earlier source retains its reviewed qualifications.

All 21 hosted checks passed on this head, including all seven platform jobs and Windows packed-CLI installation. All three preview manifests were verified as 0.9.21, with CLI and ESLint dependencies pointing to this head's Oxlint preview.

Additional independent review found no blocker in the catch-forwarding delta. Provider and leaf suites passed 516 tests locally. A fresh bounded source-rule replay preserved diagnostic counts across all nine workloads; the largest (128 filler modules, 32 maps) measured 7.21 ms versus 1.32 ms for the baseline target rule, with one filler read per file. Exact inline rejection forwarding suppressed the intended finding, while changed-error forwarding retained it. This source-only comparison uses the prior driver and current common helpers; it does not qualify whole-CLI, memory, transitive isolated-base, or corpus-wide performance. Whole-corpus parity and deployment behavior were not evaluated.

@pkg-pr-new

pkg-pr-new Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/eslint-plugin-react-doctor@2321
npm i https://pkg.pr.new/oxlint-plugin-react-doctor@2321
npm i https://pkg.pr.new/react-doctor@2321

commit: b3d9edf

@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Interactive terminal E2E

Terminal Control verified the built CLI at b3d9edf in a real PTY:

  • selected a project interactively and observed Scanning... before the three-second Git delay completed
  • waited for the clean result and exercised the compact report
  • opened copy context and the GitHub Actions confirmation, then cancelled safely

Download the edited MP4 and PNG evidence

@aidenybai
aidenybai marked this pull request as ready for review November 1, 2026 09:42
@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit b3d9edf.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant